//公共的方法
//防抖函数
export function debounce(func, delay) {
  let timer = null;
  // ...可传递多个参数 接收 调用debounce 的事件 的形参
  return function(...args) {
    if (timer) clearTimeout(timer);
    timer = setTimeout(() => {
      func.apply(this, args);
    }, delay);
  };
}

// //时间格式化
// export function dateFormat(fmt, date) {
//   let ret;
//   const opt = {
//       "y+": date.getFullYear().toString(),        // 年
//       "M+": (date.getMonth() + 1).toString(),     // 月
//       "d+": date.getDate().toString(),            // 日
//       "h+": date.getHours().toString(),           // 时
//       "m+": date.getMinutes().toString(),         // 分
//       "s+": date.getSeconds().toString()          // 秒
//       // 有其他格式化字符需求可以继续添加，必须转化成字符串
//   };
//   for (let k in opt) {
//       ret = new RegExp("(" + k + ")").exec(fmt);
//       if (ret) {
//           fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
//       };
//   };
//   return fmt;
// }

//时间格式化
export function formatDate(date, fmt) {
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(
      RegExp.$1,
      (date.getFullYear() + "").substr(4 - RegExp.$1.length)
    );
  }
  let o = {
    "M+": date.getMonth() + 1,
    "d+": date.getDate(),
    "h+": date.getHours(),
    "m+": date.getMinutes(),
    "s+": date.getSeconds()
  };
  for (let k in o) {
    if (new RegExp(`(${k})`).test(fmt)) {
      let str = o[k] + "";
      fmt = fmt.replace(
        RegExp.$1,
        RegExp.$1.length === 1 ? str : padLeftZero(str)
      );
    }
  }
  return fmt;
}

function padLeftZero(str) {
  return ("00" + str).substr(str.length);
}
